// QQ表情插件
define('face', function(require, exports, module) {
	(function($){  
		$.fn.qqFace = function(options){
			var defaults = {
				id : 'facebox',
				path : 'face/',
				assign : 'content',
				tip : 'em_'
			};
			var option = $.extend(defaults, options);
			var assign = $('#'+option.assign);
			var id = option.id;
			var path = option.path;
			var tip = option.tip;
			
			/*
			if(assign.length<=0){
				alert('缺少表情赋值对象。');
				return false;
			}
			*/
			
			$(this).click(function(e){
				//alert($(this).attr('tlid'));
				var itemid = $(this).attr('itemid');
				
				var contentid = itemid ? option.assign+'_'+itemid : option.assign;
				
				var strFace, labFace;
				if($('#'+id).length<=0){
					strFace = '<div id="'+id+'" style="position:absolute;display:none;z-index:1000;background:#ffffff;padding:7px;border:1px solid #cecece;margin-top:8px;" class="qqFace">' +
							  '<table border="1" cellspacing="0" cellpadding="0" style="border: 1px solid #eeeeee;"><tr>';
					for(var i=1; i<=75; i++){
						labFace = '['+tip+i+']';
						//strFace += '<td style="padding: 1px;"><img src="'+path+i+'.gif" onclick="$(\'#'+contentid+'\').setCaret();$(\'#'+contentid+'\').insertAtCaret(\'' + labFace + '\');$(\'#'+contentid+'\').focus();" /></td>';
						strFace += '<td style="padding: 1px;"><img src="'+path+i+'.gif" onclick="insertface('+"'"+contentid+"'"+','+i+');" /></td>';
						if( i % 15 == 0 ) strFace += '</tr><tr>';
					}
					strFace += '</tr></table></div>';
				}
				$(this).parent().append(strFace);
				var offset = $(this).position();
				var top = offset.top + $(this).outerHeight();
				$('#'+id).css('top',top);
				$('#'+id).css('left',offset.left);
				$('#'+id).show();
				e.stopPropagation();
			});

			$(document).click(function(){
				$('#'+id).hide();
				$('#'+id).remove();
			});
		};

	})(jQuery);

	jQuery.extend({ 
	unselectContents: function(){ 
		if(window.getSelection) 
			window.getSelection().removeAllRanges(); 
		else if(document.selection) 
			document.selection.empty(); 
		} 
	}); 
	jQuery.fn.extend({ 
		selectContents: function(){ 
			$(this).each(function(i){ 
				var node = this; 
				var selection, range, doc, win; 
				if ((doc = node.ownerDocument) && (win = doc.defaultView) && typeof win.getSelection != 'undefined' && typeof doc.createRange != 'undefined' && (selection = window.getSelection()) && typeof selection.removeAllRanges != 'undefined'){ 
					range = doc.createRange(); 
					range.selectNode(node); 
					if(i == 0){ 
						selection.removeAllRanges(); 
					} 
					selection.addRange(range); 
				} else if (document.body && typeof document.body.createTextRange != 'undefined' && (range = document.body.createTextRange())){ 
					range.moveToElementText(node); 
					range.select(); 
				} 
			}); 
		}, 

		setCaret: function(){ 
			var test = /msie/.test(navigator.userAgent.toLowerCase());
			if(!test) return; 
			var initSetCaret = function(){ 
				var textObj = $(this).get(0); 
				textObj.caretPos = document.selection.createRange().duplicate(); 
			}; 
			$(this).click(initSetCaret).select(initSetCaret).keyup(initSetCaret); 
		}, 

		insertAtCaret: function(textFeildValue){ 
			var textObj = $(this).get(0); 
			if(document.all && textObj.createTextRange && textObj.caretPos){ 
				var caretPos=textObj.caretPos; 
				caretPos.text = caretPos.text.charAt(caretPos.text.length-1) == '' ? 
				textFeildValue+'' : textFeildValue; 
			} else if(textObj.setSelectionRange){ 
				var rangeStart=textObj.selectionStart; 
				var rangeEnd=textObj.selectionEnd; 
				var tempStr1=textObj.value.substring(0,rangeStart); 
				var tempStr2=textObj.value.substring(rangeEnd); 
				textObj.value=tempStr1+textFeildValue+tempStr2; 
				textObj.focus(); 
				var len=textFeildValue.length; 
				textObj.setSelectionRange(rangeStart+len,rangeStart+len); 
				textObj.blur(); 
			}else{ 
				textObj.value+=textFeildValue; 
			} 
		} 
	});
});